package empleados.ventana.componentes.paises;

import empleados.clases.administracion.componentes.AdministracionPais;

import empleados.clases.componentes.Paises;
import empleados.clases.componentes.Pais;

import empleados.ventana.componentes.interfaz.BotonEnTabla;
import empleados.ventana.componentes.interfaz.TablaEditableModelo;

import java.util.TreeSet;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.JScrollPane;
import javax.swing.ImageIcon;
import javax.swing.table.DefaultTableModel;
import javax.swing.Action;

import java.awt.Toolkit;
import java.awt.Rectangle;

import java.awt.event.KeyEvent;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class AdministracionPaisesGUI{

    public AdministracionPaisesGUI(){

        JFrame frame = new JFrame("Administracion de Paises.");
        JPanel panel = new JPanel();

        AdministracionPais adminPais = new AdministracionPais(0);

        frame.setLocation(100, 100);
        frame.setSize(480, 300);
        frame.setResizable(false);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setIconImage(Toolkit.getDefaultToolkit().getImage("empleados/ventana/componentes/paises/imagenes/paises.png"));

        frame.getContentPane().add(panel);

        JMenuBar menuPrincipal = new JMenuBar();
        JMenu paisesMenu = new JMenu("Paises");
        paisesMenu.setMnemonic(KeyEvent.VK_P);
        JMenuItem paisesNuevo = new JMenuItem("Nuevo");
        paisesNuevo.setIcon(new ImageIcon(Toolkit.getDefaultToolkit().getImage("empleados/ventana/componentes/paises/imagenes/nuevo.png")));
        paisesNuevo.setMnemonic(KeyEvent.VK_N);
        paisesMenu.add(paisesNuevo);
        JMenuItem paisesCerrar = new JMenuItem("Cerrar");
        paisesCerrar.setIcon(new ImageIcon(Toolkit.getDefaultToolkit().getImage("empleados/ventana/componentes/paises/imagenes/salir.png")));
        paisesCerrar.setMnemonic(KeyEvent.VK_C);
        paisesCerrar.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                System.exit(0);
            }
        });
        paisesMenu.add(paisesCerrar);
        menuPrincipal.add(paisesMenu);

        frame.setJMenuBar(menuPrincipal);

        Paises paises = new Paises();
        TreeSet<Pais> arbolPaises = paises.getPaises();

        boolean columnasEditables[] = {false,false,true,true};
        TablaEditableModelo tablaModelo = new TablaEditableModelo();
        tablaModelo.addColumn("Id");
        tablaModelo.addColumn("Pais");
        tablaModelo.addColumn("Modificar");
        tablaModelo.addColumn("Eliminar");

        Object filasTabla[][] = new Object[arbolPaises.size()][4];
        int i = 0;
        for(Pais p : arbolPaises){
            filasTabla[i][0] = p.getId();
            filasTabla[i][1] = p.getPais();
            filasTabla[i][2] = null;
            filasTabla[i][3] = null;
            tablaModelo.addRow(filasTabla[i++]);
        }

        tablaModelo.setIsEditable(arbolPaises.size(), columnasEditables);

        JTable tablaPaises = new JTable(tablaModelo);
        tablaPaises.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

        Action modificar = adminPais.modificarPaisAction();
        Action eliminar = adminPais.borrarPaisAction();

        BotonEnTabla botonModificar = new BotonEnTabla(tablaPaises, 2, modificar, "Modificar");
        BotonEnTabla botonEliminar = new BotonEnTabla(tablaPaises, 3, eliminar, "Eliminar");

        frame.getContentPane().add(new JScrollPane(tablaPaises));

        tablaPaises.getTableHeader().setResizingAllowed(false);
        tablaPaises.getTableHeader().setReorderingAllowed(false);
        tablaPaises.getColumnModel().getColumn(0).setPreferredWidth(55);
        tablaPaises.getColumnModel().getColumn(1).setPreferredWidth(200);
        tablaPaises.getColumnModel().getColumn(2).setPreferredWidth(100);
        tablaPaises.getColumnModel().getColumn(3).setPreferredWidth(100);

        frame.setVisible(true);
    }

    public static void main(String args[]){
        new AdministracionPaisesGUI();
    }

}